let str:string='aa'
console.log(str);

//1.1数组-ts里数组只能放定义那种类型数据
let arr:number[]=[1,2]
// arr.push('1') // 报错 类型“string”的参数不能赋给类型“number”的参数
let arr1:string[]=['1','2']

console.log('数组[]方式',arr,arr1);

//1.2 使用泛型定义数组
let arr2:Array<number>=[1,2]
let str2:Array<string>=['a','b']

console.log('数组泛型<>方式',arr2,str2);


//2.元组-放不同类型
let arr3:[number,string]=[1,'元组']
arr3[0]=2  //可以只赋值其中一项
// arr3=[2] //如果多个重新赋值的话，必须全部赋值，否则报错
console.log(arr3);

//3.类型推论
// 什么是类型推论?TypeScript 会在没有明确的指定类型的时候推测出一个类型，这就是类型推论。

let str3='类型推论'
// str3=7  // 以下代码虽然没有指定类型，但是会在编译的时候报错

// 3.2 推论any类型。如果定义的时候没有赋值，不管之后有没有赋值，都会被推断成 any 类型而完全不被类型检查：
let str4;
str4='a' 
str4=4 //输出最后一个
console.log(str4);

// 4.1 联合类型-联合类型表示取值可以为多种类型中的一种，使用 `|` 分隔每个类型
let numStr:string|number;
numStr='seven'
numStr=2
// numStr=true //以下是错误的,因为上面已经定义过类型，不能是其他类型
console.log(numStr);

// 4.2 访问联合类型的属性或方法-当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候，我们**只能访问此联合类型的所有类型里共有的属性或方法
function getNumStr(num2:string|number){
    // return num2.length  //报错
    return num2.toString()  //访问共有属性

}


export {}  




